/**
 * 统一的Chart.js配置模块
 * 用于避免多个Chart实例导致的版本冲突
 */

import { Chart, registerables } from 'chart.js';

// 注册所有Chart.js组件
Chart.register(...registerables);

// 创建版本插件，防止重复定义版本属性
const preventVersionRedefinePlugin = {
  id: 'preventVersionRedefine',
  beforeInit: (chart) => {
    // 确保只定义一次version属性
    if (!Object.prototype.hasOwnProperty.call(Chart, '_versionDefined')) {
      Object.defineProperty(Chart, '_versionDefined', { value: true });
      
      // 如果尝试重新定义version属性，将会被忽略
      const originalDefineProperty = Object.defineProperty;
      Object.defineProperty = function(obj, prop, descriptor) {
        if (obj === Chart && prop === 'version' && Chart.version) {
          console.log('Prevented Chart.js version redefinition');
          return obj;
        }
        return originalDefineProperty.call(this, obj, prop, descriptor);
      };
    }
  }
};

// 添加防止版本重定义的插件
Chart.register(preventVersionRedefinePlugin);

// 导出单例Chart实例
export default Chart; 